package persistencia;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class XMLPersister<T> {
	public String arquivo;

	public XMLPersister() {
		this(null);
	}

	public XMLPersister(String arquivo) {
		this.arquivo = arquivo;
	}
	/**
	 * Grava as informações de um certo objeto em formato XML num dado arquivo.
	 * 
	 * @param persistivel
	 *            Objeto a ser persistido.
	 * @throws FileNotFoundException
	 *             Se ocorrer alguma falha na gravação.
	 */
	public void salvar(T persistivel)
			throws FileNotFoundException {
		XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(
				new FileOutputStream(arquivo)));
		encoder.writeObject(persistivel);
		encoder.close();
	}
	/**
	 * Método para recuperar as informações de um dado arquivo XML.
	 * 
	 * @return O objeto com as informações.
	 * @throws FileNotFoundException
	 *             Se ocorrer alguma falha na gravação.
	 */
	public T carregar()
			throws FileNotFoundException {
		XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(
				new FileInputStream(arquivo)));
		@SuppressWarnings("unchecked")
		T obj = (T) decoder.readObject();
		decoder.close();
		return obj;
	}
	public void setArquivo(String arquivo) {
		this.arquivo = arquivo;
		
	}

	public boolean delete(String caminho) {
		File file = new File(caminho);
		return file.delete();		
	}
}
